/**
 * 
 */
package cn.biplam.front.htmlscript.script;

import cn.biplam.common.paramters.SysCaption;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.common.wrapper.UserInfo;
import cn.biplam.front.component.data.common.CaptionComp;
import cn.biplam.front.html.base.Const.Window_Event;


/**
 * 客户端事件绑定脚本命令
 * @author 	WangSong
 * @create 	2009-4-5 下午10:11:52
 * @version 1.0
 */
public class ScriptBind extends ScriptSentence{
	
	/**
	 * 功能：构造方法	设置需要在客户端绑定的事件
	 * @param sObjectID		绑定的对象ID
	 * @param event			绑定的事件名称
	 * @param script		绑定的脚本命令
	 */
	public ScriptBind(String sObjectID,Window_Event event,String script){
		StringBuilder sb=new StringBuilder();
		sb.append("rt.put(\"");
		sb.append(sObjectID);
		sb.append("\",\"");
		sb.append(event.toString());
		sb.append("\",\"");
		sb.append(script);
		sb.append("\");");
		super.replace(sb.toString());
	}
	
	/**
	 * 定时执行指定脚本
	 * @param script  脚本
	 * @param sCid    执行标志容器Id
	 * @param time    执行时间间隔
	 * @return
	 */
	public static String ScriptInTime(String script,String sCid,String time){
		StringBuilder sb = new StringBuilder();
		sb.append("sRefresh(\"");
		sb.append(script);
		sb.append("\",'");
		sb.append(sCid);
		sb.append("',"+time+");");
		return sb.toString();
	}
	
	/**
	 * 异常警告脚本
	 * @param title	异常窗口标题
	 * @param info	异常提示信息
	 * @return	String
	 */
	public static String Alert(String title,String info){
		StringBuilder sb = new StringBuilder("Alert(\"");
		sb.append(title.replace('\"', '\''));
		sb.append("\",\"");
		sb.append(info.replace("\n", "<BR>").replace(";", ";<BR>").replace('\"', '\''));
		sb.append("\");");
		return sb.toString();
	}
	
	/**
	 * 返回提示 服务器端异常 的Alert脚本
	 * @param e
	 * @param mUser
	 * @return	String
	 */
	public static String getSystemAlert(ErrorMessage e,UserInfo mUser){
		String info=getAlertInfo(e);
		String title="";
		try {
			title = CaptionComp.get(mUser, SysCaption.Server_Exception);
		} catch (ErrorMessage e1) {}
		String script=ScriptBind.Alert(title, info);
		return script;
	}
	
	/**
	 * 返回包含页面换行符的异常信息文本
	 * @param e
	 * @return	String
	 */
	public static String getAlertInfo(ErrorMessage e){
		StringBuilder sb = new StringBuilder();
		sb.append(e.getMessage().replace("\n", "<BR>").replace(";", ";<BR>").replace('\"', '\''));
		sb.append("<BR>\tat ");
		sb.append(e.getAddress());
		return sb.toString();
	}
	
}
